package com.gaofans.nrpc.server.bootstrap;

import com.gaofans.nrpc.server.handler.ServerFilter;
import reactor.core.publisher.Mono;

/**
 * @author GaoFans
 */
public interface RpcServer{

    /**
     * 启动服务器
     * @return
     */
    Mono<Void> start();

    /**
     * 关闭服务器
     * @return
     */
    Mono<Void> stop();


    /**
     * 注册服务类
     * @param serviceClass
     * @param service
     */
    <T> void registerService(Class<T> serviceClass,T service);


    /**
     * 添加过滤器
     * @param filter
     */
    void addFilter(ServerFilter filter);
}
